package com.zmn.brs.services.interfaces.threshold;

import java.util.List;
import com.zmn.brs.model.entity.threshold.Threshold;
import com.zmn.brs.model.entity.threshold.ThresholdBase;
import com.zmn.brs.model.entity.threshold.ThresholdQuery;
import com.zmn.brs.model.vo.rule.ObjRuleVO;

/**
 * 描述: 阀值基础接口类
 *
 * @author xujie
 * @since  2021-03-17 13:55:07
 **/
public interface ThresholdService {

    /**
     * 描述: 根据id查询数据
     *
     * @param thresholdId id
     * @return Threshold
     * @author xujie
     * @since 2021-03-17 13:55:07
     **/
    Threshold findById(Integer thresholdId);

    /**
     * 描述: 根据规则id查询数据
     *
     * @param ruleId 规则ID
     * @return Threshold
     * @author chongw
     * @since 2021-07-12 18:55:07
     **/
    Threshold findCommonThresholdByRuleId(Integer ruleId);

    /**
     * 描述: 根据规则id及目标责任人查询数据
     *
     * @param ruleId 规则ID
     * @return Threshold
     * @author chongw
     * @since 2021-07-20 18:55:07
     **/
    Threshold findThresholdByStaffId(Integer ruleId , Integer staffId);

    /**
     * 描述: 根据阀值ID列表查询阀值基础数据
     *
     * @param  thresholdIdList 阀值ID列表
     * @return List<ThresholdBase>
     * @author xujie
     * @since 2021-03-18 18:44:07
     **/
    List<ThresholdBase> listByThresholdIdList(List<Integer> thresholdIdList);

    /**
     * 描述: 根据规则ID列表查询阀值基础数据
     *
     * @param  ruleIdList 规则ID列表
     * @return List<ThresholdBase>
     * @author xujie
     * @since 2021-03-17 14:57:07
     **/
    List<ThresholdBase> listByRuleIdList(List<Integer> ruleIdList);

    /**
     * 描述: 按条件查询数据 支持分页
     *
     * @param query 查询对象
     * @return List<Threshold>
     * @author xujie
     * @since 2021-03-17 13:55:07
     **/
    List<Threshold> listPageByQuery(ThresholdQuery query);

    /**
     * 描述: 按条件查询数据 不支持分页
     *
     * @param query 查询对象
     * @return Threshold
     * @author xujie
     * @since 2021-03-17 13:55:07
     **/
    List<Threshold> listByQuery(ThresholdQuery query);

    /**
     * 查询阈值数据
     * @param eventCode 事件编码
     * @param thresholdName 阈值名称
     * @return java.util.List<com.zmn.brs.model.entity.threshold.ThresholdBase>
     * @throws
     * @author zhangyao
     * @since 2021/05/25 14:04
     */
    List<ThresholdBase> getThresholdBasesByEventCodeAndThresholdName(Integer eventCode, String thresholdName);

    /**
     * 描述: 根据查询条件统计满足条件的数据条数
     *
     * @param query 查询对象
     * @return Integer
     * @author xujie
     * @since 2021-03-17 13:55:07
     */
    Integer countByQuery(ThresholdQuery query);

    /**
     * 描述: 根据id修改数据 id为必传
     *
     * @param threshold 待修改数据
     * @return java.lang.Integer
     * @author xujie
     * @since  2021-03-17 13:55:07
     **/
    Integer updateByKey(Threshold threshold);

    /**
     * 描述: 批量修改数据
     *
     * @param thresholdList 数据集合
     * @return java.lang.Integer 成功个数
     * @author xujie
     * @since  2021-03-17 13:55:07
     */
    Integer updateBatchByKey(List<Threshold> thresholdList);

    /**
     * 描述: 新增数据
     *
     * @param threshold 待新增数据
     * @return java.lang.Integer 主键key
     * @author xujie
     * @since  2021-03-17 13:55:07
     **/
    Integer insert(Threshold threshold);

    /**
     * 描述: 批量新增数据
     *
     * @param thresholdList 待新增数据集合
     * @return java.lang.Integer 成功个数
     * @author xujie
     * @since  2021-03-17 13:55:07
     */
    Integer insertBatch(List<Threshold> thresholdList);

    /**
     * 描述: 根据主键删除数据
     *
     * @param thresholdId 主键
     * @return 执行结果码
     * @author xujie
     * @since 2021-03-17 13:55:07
     */
    Integer deleteByKey(Integer thresholdId);

    /**
     * 描述: 根据主键批量删除数据
     *
     * @param thresholdIdList 待新增数据集合
     * @return java.lang.Integer 成功个数
     * @author xujie
     * @since  2021-03-17 13:55:07
     */
    Integer deleteBatchByKey(List<Integer> thresholdIdList);

    /**
     * 修改规则值域
     * @param objRuleVO
     * @return
     */
    Integer updateRuleThreshold(ObjRuleVO objRuleVO);

}

